﻿using static System.Console;

namespace Chapter04.DesignMode3 {
    /// <summary>
    /// 披萨
    /// </summary>
    public abstract class Pizza {
        /// <summary>
        /// 名称
        /// </summary>
        public string? Name { get; protected set; }

        /// <summary>
        /// 面团
        /// </summary>
        public Dough? Dough { get; protected set; }

        /// <summary>
        /// 酱料
        /// </summary>
        public Sauce? Sauce { get; protected set; }

        /// <summary>
        /// 蔬菜
        /// </summary>
        public Veggie[]? Veggies { get; protected set; }

        /// <summary>
        /// 干酪
        /// </summary>
        public Cheese? Cheese { get; protected set; }

        /// <summary>
        /// 意式辣肠
        /// </summary>
        public Pepperoni? Pepperoni { get; protected set; }

        /// <summary>
        /// 蛤蜊
        /// </summary>
        public Clams? Clam { get; protected set; }

        public void Bake() {
            WriteLine("Bake for 25 minutes at 350");
        }

        public void Cut() {
            WriteLine("Cutting the pizza into diagonal slices");
        }

        public void Box() {
            WriteLine("Please pizza in offical PizzaStore box");
        }

        /// <summary>
        /// 筹备
        /// </summary>
        public abstract void Prepare();

        public override string? ToString() {
            return Name;
        }
    }
}
